2009/10/30

Recent entries from same category

  1. PerlでWindowsと親和性の高いreadlineが欲しい → あった「Caroline」
  2. Perl をゆるふわと語ろう
  3. cpanfile とは何か、なぜそれを使いたいのか
  4. plackup の --path 引数
  5. Github Notification API が出たので通知を Growl するの書いた。

昨日IRCでsecurity guyの人と話してて、twitterに新しく導入された機能「list」には少し不満があるという話をしてた。
ざっと上げると
  • 個人単位のlistであり、追加するにはそのlistの持ち主でしか追加出来ない。
  • UIが痛い。listについての画面遷移、追加削除がやりにくい。
  • 他人のlistを自分のlistにimportしたいが出来ない。
こんな感じ。まだまだbetaだからこれから良くなるのかもしれないけど、さすがにimportは欲しいよね...って事で3分程度で作ってみた。
APIは昨日調べてなんとなく分かってたので、だいぶ楽に作れた。
#!/usr/bin/env perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON;
use Config::Pit;

# のび太の物は俺の物
my $copy_from = $ARGV[0] || 'hasegawayosuke/javascript';
# 俺の物は俺の物
my $copy_to = $ARGV[1] || 'mattn_jp/javascripter';

my $config = pit_get("twitter.com", requires => {
    username => 'username in twitetr.com',
    password => 'password in twitetr.com',
});

my $ua = new LWP::UserAgent;
$ua->env_proxy;
$ua->credentials(
    "twitter.com:80", "Twitter API",
    $config->{username} => $config->{password}
);
my $json = from_json($ua->get("http://twitter.com/$copy_from/members.json")->decoded_content);

for (@{$json->{users}}) {
    $ua->post("http://twitter.com/$copy_to/members.json", {id => $_->{id}});
}
使い方は # perl copy-to-mylist-from-others.pl hasegawayosuke/javascript mattn_jp/javascripter
こんな感じ。実行するときにはジャイアンのテーマを脳内再生しながら実行して下さい。
Posted at by